Skip to content

[6.x] Normalize and configure trailing slashes in URLs #11840

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 80 commits into
base: master
Choose a base branch
from

Conversation

jesseleite
Copy link
Member

@jesseleite jesseleite commented Jun 3, 2025

Note: Still wip, I want to test this with SEO Pro and SSG before we actually merge this.

This PR adds the ability to enforce trailing slashes in URLs via URL::enforceTrailingSlashes(), which has been asked for a fair bit.

The idea is to make Statamic normalize trailing slashes in URLs (ie. remove them by default, or add them if the above is configured), while respecting URL query and fragment at the end of any given URL. To opt into this functionality for any URL output, simply wrap the URL with URL::tidy($url).

In fact, all methods on the URL facade should now return tidied output with normalized trailing slashes where relevant.

For more advanced cases where an addon needs to control flow around enforcing/stripping trailing slashes, it can pass a true/false bool into URL::enforceTrailingSlashes($bool) as necessary (see test coverage around this).

References: statamic/ideas#1293
References: statamic/ssg#65
References: statamic/seo-pro#387

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant